import Vue from "vue";
import VueRouter from "vue-router";

const originalPush = VueRouter.prototype.push;
VueRouter.prototype.push = function push(location, onResolve, onReject) {
  if (onResolve || onReject)
    return originalPush.call(this, location, onResolve, onReject);
  return originalPush.call(this, location).catch((err) => err);
};

Vue.use(VueRouter);

import Layout from "@/layout";

// 通用页面：不需要守卫，可直接访问
export const constRoutes = [
  {
    path: "/login",
    component: () => import("@/views/Login"),
    hidden: true, // 导航菜单忽略该项
  },
  {
    path: "/",
    component: Layout,
    redirect: "/home",
    children: [
      {
        path: "home",
        name: "Home",
        component: () => import("../views/Home.vue"),
        title: "首页",
        icon: "home",
      },
    ],
  }
  // {
  //   path: "/wRecordType",
  //   component: Layout,
  //   name: "Patrol",
  //   meta: {
  //     title: "巡检记录",
  //   },
  //   children: [
  //     {
  //       path: "WRecord",
  //       component: () => import("@/views/polling/WRecord/index"),
  //       name: "Visit",
  //       meta: {
  //         title: "巡检记录类型",
  //       },
  //     },
  //   ],
  // },
];

// export const asyncRoutes = [
//   {
//     path: '/patrol',
//     component: Layout,
//     redirect: '/patrol/visit',
//     name: 'Patrol',
//     meta: {
//       title: '巡检记录',
//       icon: 'patrol'
//     },
//     children: [
//       {
//         path: 'visit',
//         component: () => import('@/views/polling/visit'),
//         name: 'Visit',
//         meta: {
//           title: '配电室出入登记'
//         }
//       },
//       {
//         path: 'record',
//         component: () => import('@/views/polling/record'),
//         name: 'Record',
//         meta: {
//           title: '配电室巡检记录'
//         }
//       },
//       //操作室
//       {
//         path: 'kvoperation',
//         component: () => import('@/views/polling/kvoperation/index'),
//         hidden: true
//       },
//       //低压配电
//       {
//         path: 'lowroom',
//         component: () => import('@/views/polling/lowroom/index'),
//         hidden: true
//       },
//       //干式
//       {
//         path: 'drytransformer',
//         component: () => import('@/views/polling/drytransformer/index'),
//         hidden: true
//       },
//       //kv变压器
//       {
//         path: 'kvtransformer',
//         component: () => import('@/views/polling/kvtransformer/index'),
//         hidden: true
//       },
//       //气体密度
//       {
//         path: 'sf6machine',
//         component: () => import('@/views/polling/sf6machine/index'),
//         hidden: true
//       },
//       //仪表机柜
//       {
//         path: 'meterroom',
//         component: () => import('@/views/polling/meterroom/index'),
//         hidden: true
//       },
//       //智能机器
//       {
//         path: 'robotroom',
//         component: () => import('@/views/polling/robotroom/index'),
//         hidden: true
//       },
//       //主变
//       {
//         path: 'maintransformer',
//         component: () => import('@/views/polling/maintransformer/index'),
//         hidden: true
//       },
//       {
//         path: 'administration',
//         component: () => import('@/views/polling/administration'),
//         name: 'administration',
//         meta: {
//           title: '配电室管理'
//         }
//       }
//     ]
//   },
//   {
//     path: '/archives',
//     component: Layout,
//     redirect: '/archives/userDetail',
//     name: 'Archives',
//     meta: {
//       title: '个人安全档案',
//       icon: 'archives'
//       // roles: ['admin', 'editor']
//     },
//     children: [
//       {
//         path: 'userDetail',
//         component: () => import('@/views/user/user-detail'),
//         name: 'UserDetail',
//         meta: {
//           title: '员工档案'
//         }
//       },
//       {
//         path: 'createUser',
//         component: () => import('@/views/user/create-user'),
//         name: 'CreateUser',
//         meta: {
//           title: '新增员工'
//         },
//         hidden: true
//       },
//       {
//         path: 'training',
//         component: () => import('@/views/personal-files/training'),
//         name: 'Training',
//         meta: {
//           title: '培训记录'
//         }
//       },
//       {
//         path: 'activity',
//         component: () => import('@/views/personal-files/activity'),
//         name: 'Activity',
//         meta: {
//           title: '安全活动与技能比武记录'
//         }
//       },
//       {
//         path: 'suggest',
//         component: () => import('@/views/personal-files/suggest'),
//         name: 'Suggest',
//         meta: {
//           title: '创新与合理化建议记录'
//         }
//       },
//       // {
//       //   path: 'hiddenDanger',
//       //   component: () => import('@/views/personal-files/hiddenDanger'),
//       //   name: 'HiddenDanger',
//       //   meta: {
//       //     title: '隐患排查记录',
//       //     // roles: ['admin']
//       //   },
//       // },
//       {
//         path: 'violate',
//         component: () => import('@/views/personal-files/violate'),
//         name: 'Violate',
//         meta: {
//           title: '反三违及事故记录'
//         }
//       },
//       {
//         path: 'evaluate',
//         component: () => import('@/views/personal-files/evaluate'),
//         name: 'Evaluate',
//         meta: {
//           title: '员工自评'
//           // roles: ['admin'] // or you can only set roles in sub nav
//         }
//       },
//       {
//         path: 'postchange',
//         component: () => import('@/views/personal-files/postchange'),
//         name: 'Postchange',
//         meta: {
//           title: '岗位变更登记记录'
//         }
//       },
//       {
//         path: 'background',
//         component: () => import('@/views/personal-files/background'),
//         name: 'Background',
//         meta: {
//           title: '个人积分统计表'
//         }
//       },
//       {
//         path: 'matter',
//         component: () => import('@/views/personal-files/matter'),
//         name: 'Matter',
//         meta: {
//           title: '年度重大事项说明'
//         }
//       }
//     ]
//   },
//   {
//     path: '/microClass',
//     component: Layout,
//     redirect: '/microClass/Records',
//     name: 'MicroClass',
//     meta: {
//       title: '班组微小课培训记录',
//       icon: 'microClass'
//     },
//     children: [
//       {
//         path: 'records',
//         component: () => import('@/views/course/Records'),
//         name: 'Records',
//         meta: {
//           title: '培训记录'
//         }
//       },
//       {
//         path: 'recordsdetail',
//         component: () => import('@/views/course/recordsdetail'),
//         name: 'Recordsdetail'
//       },
//       {
//         path: 'addrecord',
//         component: () => import('@/views/course/addrecord'),
//         name: 'Addrecord'
//       }
//     ]
//   },

//   {
//     path: '/permission',
//     component: Layout,
//     redirect: '/permission/department',
//     name: 'Permission',
//     meta: {
//       title: '组织架构及权限管理'
//     },
//     children: [
//       {
//         path: 'department',
//         component: () => import('@/views/permission/department'),
//         name: 'Department',
//         meta: {
//           title: '部门管理'
//         }
//       },
//       {
//         path: 'job',
//         component: () => import('@/views/permission/job'),
//         name: 'Job',
//         meta: {
//           title: '职务管理'
//         }
//       },
//       {
//         path: 'jobset',
//         component: () => import('@/views/permission/jobset'),
//         name: 'Jobset'
//       },
//       {
//         path: 'staff',
//         component: () => import('@/views/permission/staff'),
//         name: 'Staff',
//         meta: {
//           title: '员工管理'
//         }
//       }
//     ]
//   }
// ]

const createRouter = () =>
  new VueRouter({
    // mode: 'history', // require service support
    // scrollBehavior: () => ({ y: 0 }),
    base: process.env.BASE_URL,
    routes: constRoutes,
  });

const router = createRouter();

// Detail see: https://github.com/vuejs/vue-router/issues/1234#issuecomment-357941465
export function resetRouter() {
  const newRouter = createRouter();
  router.matcher = newRouter.matcher; // reset router
}

export default router;
